In conventional packet-based communication, the sender drops packets onto the network with a destination address (e.g., an Internet Protocol (IP) destination address), and the packets are delivered to that destination address.
This process is analogous to how mail (e.g., a letter) is delivered by the United States Post Office from sender to receiver. The Post Office personnel perform the delivery by using the destination address (e.g., street address, city, state and zip code). It is noted that the sender and the receiver have no control over how the letter gets from point A (the sender) to point B (the receiver). The Post Office personnel can use any number of different mail sorting and forwarding facilities and delivery vehicles (e.g., airplanes, mail trucks, etc.).
Similarly, in packet-based networks, the sending computer and receiving computer have no control over how the packets are delivered from point A to point B. This property has been instrumental to the growth of the Internet. Furthermore, this property is advantageous in that the infrastructure can be changed without affecting how point A communicates with point B. For example, the nodes can be added or deleted in the network and the network and sub-network configurations may be changed without affecting the communication between point A and point B.
Unfortunately, this property also limits the Internet to providing a “best effort” level of service. For example, in an electronic mail application, a sending application drops packets onto the network (e.g., the Internet) and hopes the packets are received by the intended receiver. It is noted that the Internet does not guarantee delivery of the packets to the receiver. Consequently, the sending application is uncertain of receipt of the packets until the sending application receives a confirmation of receipt from the receiving application. If a confirmation is not received within a certain time, the packets are re-sent by the sending application. This process continues until a confirmation of receipt is received by the sending application.
Unfortunately, there are many applications where the “best effort” level of service is not acceptable. For example, the use of re-transmissions may not be possible for one of several reasons. A first reason is that certain applications have a delay constraint (i.e., the information to be communicated has a time-bounded usefulness). In these applications, information that is not delivered in a timely manner is useless to the application. For real-time communication applications, information that is not timely is useless to the application. For example, an important video frame or audio packet that arrives late at the receiver cannot be used.
Examples of these applications include real-time video communications, such as real-time video telephone and video conferencing applications. Another example is one-way video, such as video games, where the video and audio information has delay constraints.
A second reason is that there may be an inability to use re-transmissions. Examples of these applications include one-way broadcast or multicast video or audio to a large number of receivers, where re-transmissions are not possible.
A third reason is that there may be certain applications where there is a lack of a feedback channel to request the re-transmission. In these applications, it is desirable to have a feedback-free communication (i.e., when there is no re-transmission available the application should provide reliable service even though there are packet losses).
Based on the foregoing, there remains a need for a method and system for a mechanism to provide reliable communication between a sender and a receiver across a packet network that overcomes the disadvantages set forth previously.